package com.test;

import com.jobs.job01_1;
import com.jobs.job01_2;

import java.util.*;

/*
 * 程序主函数运行入口,第一次假期作业
 */
public class Main {
    public static void main(String[] args){
        //作业一：10到15乘法表，右上三角
        System.out.println("1.输出10到15乘法表（右上三角格式阵列）");
        job01_1.Print_MultiplicationTable();
        //作业二：数组
        System.out.println("2.数组操作");
        //三个数组(静态初始化)：学号、姓名和成绩数组
        String[] stuNo = { "2019011535", "2019011534", "2019011539", "2019011538", "2019011537" };
        String[] stuName = { "张三", "李四", "王五", "赵六", "王九" };
        int[] stuScore = { 53, 78, 96, 66, 85 };
        //（1）
        System.out.println("(1)成绩数组中的最大值、最小值以及所有同学成绩之和:");
        System.out.println("最大值="+job01_2.maxScore(stuScore));
        System.out.println("最小值="+job01_2.minScore(stuScore));
        System.out.println("成绩之和="+job01_2.sumScore(stuScore));
        //（2）通过java.util.Arrays的sort方法进行排序，根据参数（数组类型）的不同重载不同的方法
        System.out.println("(2)分别对以上三组数据排序，向控制台输出排序前和排序后的内容");
        System.out.print("学号排序前-> ");
        for(String No:stuNo)
            System.out.print(No+",");  System.out.println();
        Arrays.sort(stuNo);
        System.out.print("学号排序后-> ");
        for(String No:stuNo)
            System.out.print(No+",");System.out.println();

        System.out.print("姓名排序前-> ");
        for(String Name:stuName)
            System.out.print(Name+","); System.out.println();
        //通过java.util.Arrays的sort方法进行排序，根据参数（数组类型）的不同重载不同的方法
        Arrays.sort(stuName);
        System.out.print("姓名排序后-> ");
        for(String Name:stuName)
            System.out.print(Name+","); System.out.println();

        System.out.print("成绩排序前-> ");
        for(int score:stuScore)
            System.out.print(score+","); System.out.println();
        //通过java.util.Arrays的sort方法进行排序，根据参数（数组类型）的不同重载不同的方法
        Arrays.sort(stuScore);
        System.out.print("成绩排序后-> ");
        for(int score:stuScore)
            System.out.print(score+","); System.out.println();
        //（3） 将（2）中排序好的内容复制到另外三个数组中。  将使用Arrays的copyOf方法
        //Arrays.copyOf(str,str.length);//第一个参数是目标数组，第二个是数组从头节点开始，复制多少个子元素
        System.out.println("(3)数组复制：");
        System.out.print("复制的学号数组-> ");
        String[] new_stuNo=Arrays.copyOf(stuNo,stuNo.length);
        for(String No:new_stuNo)
            System.out.print(No+",");  System.out.println();

        System.out.print("复制的姓名数组-> ");
        String[] new_stuName=Arrays.copyOf(stuName,stuName.length);
        for(String Name:new_stuName)
            System.out.print(Name+","); System.out.println();

        System.out.print("复制的成绩数组-> ");
        int[] new_stuScore=Arrays.copyOf(stuScore,stuScore.length);
        System.out.print("成绩排序后-> ");
        for(int score:new_stuScore)
            System.out.print(score+","); System.out.println();
        //(4)根据成绩排序，要求保持学号、姓名、成绩对应（选作）。
        System.out.println("(4)扩展题，根据学生成绩获得排名");
        String[] No = { "2019011535", "2019011534", "2019011539", "2019011538", "2019011537" };
        String[] Name = { "张三", "李四", "王五", "赵六", "王九" };
        int[] Score = { 53, 78, 96, 66, 85 };
        Map<Integer, List<String>> ranking=job01_2.ScoreSort(No,Name,Score);
        Iterator<Map.Entry<Integer, List<String>>> iterator=ranking.entrySet().iterator();
        int RankNo=1;
        while (iterator.hasNext()){
            Map.Entry<Integer, List<String>> map=iterator.next();
            System.out.println("第"+RankNo+"名："+map.getValue().get(0)+" "+map.getValue().get(1)+" "+map.getKey());
            RankNo++;
        }
        //End Show
    }
}
